/**
 */
package de.thwildau.tm.moses.asn1.asn1.impl;

import de.thwildau.tm.moses.asn1.asn1.AlternativeTypeList;
import de.thwildau.tm.moses.asn1.asn1.AnyDefinedNamedType;
import de.thwildau.tm.moses.asn1.asn1.Asn1;
import de.thwildau.tm.moses.asn1.asn1.Asn1Factory;
import de.thwildau.tm.moses.asn1.asn1.Asn1Package;
import de.thwildau.tm.moses.asn1.asn1.Assignment;
import de.thwildau.tm.moses.asn1.asn1.BMPString;
import de.thwildau.tm.moses.asn1.asn1.BitStringType;
import de.thwildau.tm.moses.asn1.asn1.BitStringValue;
import de.thwildau.tm.moses.asn1.asn1.BooleanType;
import de.thwildau.tm.moses.asn1.asn1.BooleanValue;
import de.thwildau.tm.moses.asn1.asn1.BuiltinType;
import de.thwildau.tm.moses.asn1.asn1.BuiltinValue;
import de.thwildau.tm.moses.asn1.asn1.CString;
import de.thwildau.tm.moses.asn1.asn1.CharacterStringType;
import de.thwildau.tm.moses.asn1.asn1.CharacterStringValue;
import de.thwildau.tm.moses.asn1.asn1.ChoiceType;
import de.thwildau.tm.moses.asn1.asn1.ChoiceValue;
import de.thwildau.tm.moses.asn1.asn1.ChoiceValueAssignment;
import de.thwildau.tm.moses.asn1.asn1.ClassNumber;
import de.thwildau.tm.moses.asn1.asn1.ComponentOfType;
import de.thwildau.tm.moses.asn1.asn1.ComponentType;
import de.thwildau.tm.moses.asn1.asn1.ComponentTypeList;
import de.thwildau.tm.moses.asn1.asn1.ComponentValueList;
import de.thwildau.tm.moses.asn1.asn1.Constraint;
import de.thwildau.tm.moses.asn1.asn1.ConstraintSpec;
import de.thwildau.tm.moses.asn1.asn1.ContainedSubtype;
import de.thwildau.tm.moses.asn1.asn1.ContainerType;
import de.thwildau.tm.moses.asn1.asn1.ContainerValue;
import de.thwildau.tm.moses.asn1.asn1.DateTimeType;
import de.thwildau.tm.moses.asn1.asn1.DateType;
import de.thwildau.tm.moses.asn1.asn1.DefinedType;
import de.thwildau.tm.moses.asn1.asn1.DefinedValue;
import de.thwildau.tm.moses.asn1.asn1.DurationType;
import de.thwildau.tm.moses.asn1.asn1.ElementSetSpec;
import de.thwildau.tm.moses.asn1.asn1.ElementSetSpecs;
import de.thwildau.tm.moses.asn1.asn1.Elements;
import de.thwildau.tm.moses.asn1.asn1.EncodingReferenceDefault;
import de.thwildau.tm.moses.asn1.asn1.EnumeratedType;
import de.thwildau.tm.moses.asn1.asn1.EnumerationItem;
import de.thwildau.tm.moses.asn1.asn1.ExceptionIdentification;
import de.thwildau.tm.moses.asn1.asn1.ExceptionSpec;
import de.thwildau.tm.moses.asn1.asn1.Exclusions;
import de.thwildau.tm.moses.asn1.asn1.Exports;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAddition;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternative;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesGroup;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesList;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionGroup;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAdditions;
import de.thwildau.tm.moses.asn1.asn1.ExtensionAndException;
import de.thwildau.tm.moses.asn1.asn1.GeneralString;
import de.thwildau.tm.moses.asn1.asn1.GraphicString;
import de.thwildau.tm.moses.asn1.asn1.IA5String;
import de.thwildau.tm.moses.asn1.asn1.ISO646String;
import de.thwildau.tm.moses.asn1.asn1.Imports;
import de.thwildau.tm.moses.asn1.asn1.IntegerType;
import de.thwildau.tm.moses.asn1.asn1.IntegerValue;
import de.thwildau.tm.moses.asn1.asn1.IntersectionElements;
import de.thwildau.tm.moses.asn1.asn1.Intersections;
import de.thwildau.tm.moses.asn1.asn1.LowerEndValue;
import de.thwildau.tm.moses.asn1.asn1.LowerEndpoint;
import de.thwildau.tm.moses.asn1.asn1.ModuleBody;
import de.thwildau.tm.moses.asn1.asn1.ModuleDefinition;
import de.thwildau.tm.moses.asn1.asn1.ModuleIdentifier;
import de.thwildau.tm.moses.asn1.asn1.NamedBit;
import de.thwildau.tm.moses.asn1.asn1.NamedComponentType;
import de.thwildau.tm.moses.asn1.asn1.NamedNumber;
import de.thwildau.tm.moses.asn1.asn1.NamedType;
import de.thwildau.tm.moses.asn1.asn1.NamedValue;
import de.thwildau.tm.moses.asn1.asn1.NullType;
import de.thwildau.tm.moses.asn1.asn1.NullValue;
import de.thwildau.tm.moses.asn1.asn1.NumericRealValue;
import de.thwildau.tm.moses.asn1.asn1.NumericString;
import de.thwildau.tm.moses.asn1.asn1.ObjIdComponents;
import de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierType;
import de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValue;
import de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValueAssignment;
import de.thwildau.tm.moses.asn1.asn1.OctetStringType;
import de.thwildau.tm.moses.asn1.asn1.OctetStringValue;
import de.thwildau.tm.moses.asn1.asn1.PermittedAlphabet;
import de.thwildau.tm.moses.asn1.asn1.PrefixedType;
import de.thwildau.tm.moses.asn1.asn1.PrintableString;
import de.thwildau.tm.moses.asn1.asn1.RealSequenceValue;
import de.thwildau.tm.moses.asn1.asn1.RealType;
import de.thwildau.tm.moses.asn1.asn1.RealValue;
import de.thwildau.tm.moses.asn1.asn1.ReferencedType;
import de.thwildau.tm.moses.asn1.asn1.ReferencedValue;
import de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringType;
import de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringValue;
import de.thwildau.tm.moses.asn1.asn1.SequenceOfType;
import de.thwildau.tm.moses.asn1.asn1.SequenceType;
import de.thwildau.tm.moses.asn1.asn1.SequenceValue;
import de.thwildau.tm.moses.asn1.asn1.SequenceValueAssignment;
import de.thwildau.tm.moses.asn1.asn1.SetOfType;
import de.thwildau.tm.moses.asn1.asn1.SetType;
import de.thwildau.tm.moses.asn1.asn1.SimpleType;
import de.thwildau.tm.moses.asn1.asn1.SimpleValue;
import de.thwildau.tm.moses.asn1.asn1.SimpleValueAssignment;
import de.thwildau.tm.moses.asn1.asn1.SingleValue;
import de.thwildau.tm.moses.asn1.asn1.SizeConstraint;
import de.thwildau.tm.moses.asn1.asn1.SpecialRealValue;
import de.thwildau.tm.moses.asn1.asn1.SpecialValue;
import de.thwildau.tm.moses.asn1.asn1.SubtypeConstraint;
import de.thwildau.tm.moses.asn1.asn1.SubtypeElements;
import de.thwildau.tm.moses.asn1.asn1.T61String;
import de.thwildau.tm.moses.asn1.asn1.Tag;
import de.thwildau.tm.moses.asn1.asn1.TaggedType;
import de.thwildau.tm.moses.asn1.asn1.TeletexString;
import de.thwildau.tm.moses.asn1.asn1.TimeOfDayType;
import de.thwildau.tm.moses.asn1.asn1.TimeType;
import de.thwildau.tm.moses.asn1.asn1.Type;
import de.thwildau.tm.moses.asn1.asn1.TypeAssignment;
import de.thwildau.tm.moses.asn1.asn1.TypeConstraint;
import de.thwildau.tm.moses.asn1.asn1.UTF8String;
import de.thwildau.tm.moses.asn1.asn1.Unions;
import de.thwildau.tm.moses.asn1.asn1.UniversalString;
import de.thwildau.tm.moses.asn1.asn1.UnrestrictedCharacterStringType;
import de.thwildau.tm.moses.asn1.asn1.UpperEndValue;
import de.thwildau.tm.moses.asn1.asn1.UpperEndpoint;
import de.thwildau.tm.moses.asn1.asn1.UsefulType;
import de.thwildau.tm.moses.asn1.asn1.Value;
import de.thwildau.tm.moses.asn1.asn1.ValueAssignment;
import de.thwildau.tm.moses.asn1.asn1.ValueRange;
import de.thwildau.tm.moses.asn1.asn1.ValueRangeValue;
import de.thwildau.tm.moses.asn1.asn1.VersionNumber;
import de.thwildau.tm.moses.asn1.asn1.VideotexString;
import de.thwildau.tm.moses.asn1.asn1.VisibleString;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class Asn1PackageImpl extends EPackageImpl implements Asn1Package
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass asn1EClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass moduleDefinitionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass moduleIdentifierEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass encodingReferenceDefaultEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass moduleBodyEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass exportsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass importsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass definedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass definedValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass assignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass typeAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass valueAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass simpleValueAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceValueAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass objectIdentifierValueAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass sequenceValueAssignmentEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass typeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass builtinTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass simpleTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass containerTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass referencedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass valueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass builtinValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass simpleValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass containerValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass referencedValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass booleanTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass booleanValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass integerTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedNumberEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass integerValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumeratedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass enumerationItemEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass realTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass realValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass numericRealValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass realSequenceValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass specialRealValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass bitStringTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedBitEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass bitStringValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass octetStringTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass octetStringValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass nullTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass nullValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass sequenceTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAndExceptionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentTypeListEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass versionNumberEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionGroupEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass namedComponentTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentOfTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass anyDefinedNamedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass sequenceValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass componentValueListEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass sequenceOfTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass setTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass setOfTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass alternativeTypeListEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionAlternativesGroupEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionAlternativeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass extensionAdditionAlternativesListEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass choiceValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass prefixedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass taggedTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass tagEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass classNumberEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass objectIdentifierTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass objectIdentifierValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass objIdComponentsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass timeTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dateTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass timeOfDayTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dateTimeTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass durationTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass characterStringTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass characterStringValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass restrictedCharacterStringTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass bmpStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass generalStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass graphicStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass ia5StringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass iso646StringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass numericStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass printableStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass teletexStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass t61StringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass universalStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass utf8StringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass videotexStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass visibleStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass restrictedCharacterStringValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass unrestrictedCharacterStringTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass usefulTypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass constraintEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass constraintSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass subtypeConstraintEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass elementSetSpecsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass elementSetSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass unionsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass intersectionsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass intersectionElementsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass exclusionsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass elementsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass subtypeElementsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass singleValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass containedSubtypeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass valueRangeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass lowerEndpointEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass upperEndpointEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass lowerEndValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass upperEndValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass sizeConstraintEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass typeConstraintEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass permittedAlphabetEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass valueRangeValueEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass exceptionSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass exceptionIdentificationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass cStringEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum specialValueEEnum = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EEnum boolEEnum = null;

  /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see de.thwildau.tm.moses.asn1.asn1.Asn1Package#eNS_URI
   * @see #init()
   * @generated
   */
  private Asn1PackageImpl()
  {
    super(eNS_URI, Asn1Factory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link Asn1Package#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static Asn1Package init()
  {
    if (isInited) return (Asn1Package)EPackage.Registry.INSTANCE.getEPackage(Asn1Package.eNS_URI);

    // Obtain or create and register package
    Asn1PackageImpl theAsn1Package = (Asn1PackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof Asn1PackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new Asn1PackageImpl());

    isInited = true;

    // Create package meta-data objects
    theAsn1Package.createPackageContents();

    // Initialize created meta-data
    theAsn1Package.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theAsn1Package.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(Asn1Package.eNS_URI, theAsn1Package);
    return theAsn1Package;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAsn1()
  {
    return asn1EClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAsn1_ModuleDefinition()
  {
    return (EReference)asn1EClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getModuleDefinition()
  {
    return moduleDefinitionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleDefinition_ModuleIdentifier()
  {
    return (EReference)moduleDefinitionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleDefinition_EncodingReferenceDefault()
  {
    return (EReference)moduleDefinitionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getModuleDefinition_TagDefault()
  {
    return (EAttribute)moduleDefinitionEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getModuleDefinition_ExtensionDefault()
  {
    return (EAttribute)moduleDefinitionEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleDefinition_ModuleBody()
  {
    return (EReference)moduleDefinitionEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getModuleIdentifier()
  {
    return moduleIdentifierEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getModuleIdentifier_ModuleReference()
  {
    return (EAttribute)moduleIdentifierEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEncodingReferenceDefault()
  {
    return encodingReferenceDefaultEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEncodingReferenceDefault_Name()
  {
    return (EAttribute)encodingReferenceDefaultEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getModuleBody()
  {
    return moduleBodyEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleBody_Exports()
  {
    return (EReference)moduleBodyEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleBody_Imports()
  {
    return (EReference)moduleBodyEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getModuleBody_Assignments()
  {
    return (EReference)moduleBodyEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExports()
  {
    return exportsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExports_SymbolsExported()
  {
    return (EReference)exportsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getImports()
  {
    return importsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getImports_SymbolsImported()
  {
    return (EReference)importsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getImports_Modulereference()
  {
    return (EAttribute)importsEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDefinedType()
  {
    return definedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDefinedType_Target()
  {
    return (EReference)definedTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDefinedValue()
  {
    return definedValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDefinedValue_Target()
  {
    return (EReference)definedValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAssignment()
  {
    return assignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAssignment_Name()
  {
    return (EAttribute)assignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTypeAssignment()
  {
    return typeAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTypeAssignment_Type()
  {
    return (EReference)typeAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTypeAssignment_Constraint()
  {
    return (EReference)typeAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getValueAssignment()
  {
    return valueAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSimpleValueAssignment()
  {
    return simpleValueAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSimpleValueAssignment_Type()
  {
    return (EReference)simpleValueAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSimpleValueAssignment_Value()
  {
    return (EReference)simpleValueAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceValueAssignment()
  {
    return choiceValueAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceValueAssignment_Type()
  {
    return (EReference)choiceValueAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceValueAssignment_Value()
  {
    return (EReference)choiceValueAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getObjectIdentifierValueAssignment()
  {
    return objectIdentifierValueAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getObjectIdentifierValueAssignment_Type()
  {
    return (EReference)objectIdentifierValueAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getObjectIdentifierValueAssignment_Value()
  {
    return (EReference)objectIdentifierValueAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSequenceValueAssignment()
  {
    return sequenceValueAssignmentEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceValueAssignment_Type()
  {
    return (EReference)sequenceValueAssignmentEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceValueAssignment_Value()
  {
    return (EReference)sequenceValueAssignmentEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getType()
  {
    return typeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBuiltinType()
  {
    return builtinTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSimpleType()
  {
    return simpleTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getContainerType()
  {
    return containerTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getReferencedType()
  {
    return referencedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedType()
  {
    return namedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedType_Name()
  {
    return (EAttribute)namedTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedType_Type()
  {
    return (EReference)namedTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedType_Constraint()
  {
    return (EReference)namedTypeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getValue()
  {
    return valueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBuiltinValue()
  {
    return builtinValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSimpleValue()
  {
    return simpleValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getContainerValue()
  {
    return containerValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getReferencedValue()
  {
    return referencedValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedValue()
  {
    return namedValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedValue_Identifier()
  {
    return (EAttribute)namedValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedValue_Value()
  {
    return (EReference)namedValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBooleanType()
  {
    return booleanTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBooleanValue()
  {
    return booleanValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBooleanValue_Value()
  {
    return (EAttribute)booleanValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntegerType()
  {
    return integerTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getIntegerType_NamedNumberList()
  {
    return (EReference)integerTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedNumber()
  {
    return namedNumberEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedNumber_Name()
  {
    return (EAttribute)namedNumberEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedNumber_Value()
  {
    return (EReference)namedNumberEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntegerValue()
  {
    return integerValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getIntegerValue_Value()
  {
    return (EAttribute)integerValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumeratedType()
  {
    return enumeratedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumeratedType_Exception()
  {
    return (EReference)enumeratedTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumeratedType_Enums()
  {
    return (EReference)enumeratedTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getEnumerationItem()
  {
    return enumerationItemEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumerationItem_Name()
  {
    return (EAttribute)enumerationItemEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getEnumerationItem_Number()
  {
    return (EReference)enumerationItemEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getEnumerationItem_Unspec()
  {
    return (EAttribute)enumerationItemEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRealType()
  {
    return realTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRealValue()
  {
    return realValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNumericRealValue()
  {
    return numericRealValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNumericRealValue_Value()
  {
    return (EAttribute)numericRealValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNumericRealValue_SequenceValue()
  {
    return (EReference)numericRealValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRealSequenceValue()
  {
    return realSequenceValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRealSequenceValue_Mantissa()
  {
    return (EAttribute)realSequenceValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRealSequenceValue_Base()
  {
    return (EAttribute)realSequenceValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRealSequenceValue_Exponent()
  {
    return (EAttribute)realSequenceValueEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSpecialRealValue()
  {
    return specialRealValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getSpecialRealValue_Value()
  {
    return (EAttribute)specialRealValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBitStringType()
  {
    return bitStringTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getBitStringType_NamedBits()
  {
    return (EReference)bitStringTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedBit()
  {
    return namedBitEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedBit_Identifier()
  {
    return (EAttribute)namedBitEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNamedBit_Number()
  {
    return (EAttribute)namedBitEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedBit_Value()
  {
    return (EReference)namedBitEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBitStringValue()
  {
    return bitStringValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBitStringValue_Identifiers()
  {
    return (EAttribute)bitStringValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOctetStringType()
  {
    return octetStringTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getOctetStringValue()
  {
    return octetStringValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOctetStringValue_BinString()
  {
    return (EAttribute)octetStringValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getOctetStringValue_HexString()
  {
    return (EAttribute)octetStringValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getOctetStringValue_AcontainingValue()
  {
    return (EReference)octetStringValueEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNullType()
  {
    return nullTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNullValue()
  {
    return nullValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getNullValue_Value()
  {
    return (EAttribute)nullValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSequenceType()
  {
    return sequenceTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceType_ComponentTypeList()
  {
    return (EReference)sequenceTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceType_ExtensionAndException()
  {
    return (EReference)sequenceTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceType_ExtensionAdditions()
  {
    return (EReference)sequenceTypeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAndException()
  {
    return extensionAndExceptionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAndException_Exception()
  {
    return (EReference)extensionAndExceptionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAdditions()
  {
    return extensionAdditionsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditions_ExtensionAdditions()
  {
    return (EReference)extensionAdditionsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentTypeList()
  {
    return componentTypeListEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentTypeList_ComponentTypes()
  {
    return (EReference)componentTypeListEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getVersionNumber()
  {
    return versionNumberEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getVersionNumber_Number()
  {
    return (EAttribute)versionNumberEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAddition()
  {
    return extensionAdditionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAdditionGroup()
  {
    return extensionAdditionGroupEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditionGroup_VersionNumber()
  {
    return (EReference)extensionAdditionGroupEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditionGroup_ComponentTypeList()
  {
    return (EReference)extensionAdditionGroupEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentType()
  {
    return componentTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNamedComponentType()
  {
    return namedComponentTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedComponentType_NamedType()
  {
    return (EReference)namedComponentTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getNamedComponentType_Value()
  {
    return (EReference)namedComponentTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentOfType()
  {
    return componentOfTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentOfType_Type()
  {
    return (EReference)componentOfTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAnyDefinedNamedType()
  {
    return anyDefinedNamedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAnyDefinedNamedType_Name()
  {
    return (EAttribute)anyDefinedNamedTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAnyDefinedNamedType_DefinedType()
  {
    return (EReference)anyDefinedNamedTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSequenceValue()
  {
    return sequenceValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceValue_ComponentValueList()
  {
    return (EReference)sequenceValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComponentValueList()
  {
    return componentValueListEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComponentValueList_Values()
  {
    return (EReference)componentValueListEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSequenceOfType()
  {
    return sequenceOfTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceOfType_Constraint()
  {
    return (EReference)sequenceOfTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSequenceOfType_Type()
  {
    return (EReference)sequenceOfTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSetType()
  {
    return setTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSetType_ExtensionAndException()
  {
    return (EReference)setTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSetType_ComponentTypeList()
  {
    return (EReference)setTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSetOfType()
  {
    return setOfTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSetOfType_Constraint()
  {
    return (EReference)setOfTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSetOfType_Type()
  {
    return (EReference)setOfTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceType()
  {
    return choiceTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceType_AlternativeTypeList()
  {
    return (EReference)choiceTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceType_ExtensionAndException()
  {
    return (EReference)choiceTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceType_ExtensionAdditionAlternativesList()
  {
    return (EReference)choiceTypeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAlternativeTypeList()
  {
    return alternativeTypeListEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAlternativeTypeList_NamedTypes()
  {
    return (EReference)alternativeTypeListEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAdditionAlternativesGroup()
  {
    return extensionAdditionAlternativesGroupEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditionAlternativesGroup_VersionNumber()
  {
    return (EReference)extensionAdditionAlternativesGroupEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditionAlternativesGroup_AlternativeTypeList()
  {
    return (EReference)extensionAdditionAlternativesGroupEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAdditionAlternative()
  {
    return extensionAdditionAlternativeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExtensionAdditionAlternativesList()
  {
    return extensionAdditionAlternativesListEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExtensionAdditionAlternativesList_ExtensionAdditionAlternative()
  {
    return (EReference)extensionAdditionAlternativesListEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChoiceValue()
  {
    return choiceValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getChoiceValue_Identifier()
  {
    return (EAttribute)choiceValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChoiceValue_Value()
  {
    return (EReference)choiceValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPrefixedType()
  {
    return prefixedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTaggedType()
  {
    return taggedTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTaggedType_Tag()
  {
    return (EReference)taggedTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getTaggedType_TagSpec()
  {
    return (EAttribute)taggedTypeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTaggedType_Type()
  {
    return (EReference)taggedTypeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTag()
  {
    return tagEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getTag_EncodingReference()
  {
    return (EAttribute)tagEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getTag_TagClass()
  {
    return (EAttribute)tagEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTag_ClassNumber()
  {
    return (EReference)tagEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getClassNumber()
  {
    return classNumberEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getClassNumber_Number()
  {
    return (EAttribute)classNumberEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getClassNumber_Value()
  {
    return (EReference)classNumberEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getObjectIdentifierType()
  {
    return objectIdentifierTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getObjectIdentifierValue()
  {
    return objectIdentifierValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getObjectIdentifierValue_Components()
  {
    return (EReference)objectIdentifierValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getObjIdComponents()
  {
    return objIdComponentsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getObjIdComponents_Number()
  {
    return (EAttribute)objIdComponentsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTimeType()
  {
    return timeTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDateType()
  {
    return dateTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTimeOfDayType()
  {
    return timeOfDayTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDateTimeType()
  {
    return dateTimeTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDurationType()
  {
    return durationTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCharacterStringType()
  {
    return characterStringTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCharacterStringValue()
  {
    return characterStringValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRestrictedCharacterStringType()
  {
    return restrictedCharacterStringTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getBMPString()
  {
    return bmpStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getGeneralString()
  {
    return generalStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getGraphicString()
  {
    return graphicStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIA5String()
  {
    return ia5StringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getISO646String()
  {
    return iso646StringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getNumericString()
  {
    return numericStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPrintableString()
  {
    return printableStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTeletexString()
  {
    return teletexStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getT61String()
  {
    return t61StringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUniversalString()
  {
    return universalStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUTF8String()
  {
    return utf8StringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getVideotexString()
  {
    return videotexStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getVisibleString()
  {
    return visibleStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRestrictedCharacterStringValue()
  {
    return restrictedCharacterStringValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUnrestrictedCharacterStringType()
  {
    return unrestrictedCharacterStringTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUsefulType()
  {
    return usefulTypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getUsefulType_Type()
  {
    return (EAttribute)usefulTypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConstraint()
  {
    return constraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConstraint_ConstraintSpec()
  {
    return (EReference)constraintEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getConstraint_ExceptionSpec()
  {
    return (EReference)constraintEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getConstraintSpec()
  {
    return constraintSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSubtypeConstraint()
  {
    return subtypeConstraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getElementSetSpecs()
  {
    return elementSetSpecsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getElementSetSpecs_ElementSetSpec()
  {
    return (EReference)elementSetSpecsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getElementSetSpec()
  {
    return elementSetSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getElementSetSpec_Exclusions()
  {
    return (EReference)elementSetSpecEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUnions()
  {
    return unionsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getUnions_Intersections()
  {
    return (EReference)unionsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntersections()
  {
    return intersectionsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getIntersections_IntersectionElements()
  {
    return (EReference)intersectionsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getIntersectionElements()
  {
    return intersectionElementsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getIntersectionElements_Elements()
  {
    return (EReference)intersectionElementsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getIntersectionElements_Exclusions()
  {
    return (EReference)intersectionElementsEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExclusions()
  {
    return exclusionsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExclusions_Elements()
  {
    return (EReference)exclusionsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getElements()
  {
    return elementsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSubtypeElements()
  {
    return subtypeElementsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSingleValue()
  {
    return singleValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSingleValue_Value()
  {
    return (EReference)singleValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getContainedSubtype()
  {
    return containedSubtypeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getContainedSubtype_Type()
  {
    return (EReference)containedSubtypeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getValueRange()
  {
    return valueRangeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getValueRange_LowerEndpoint()
  {
    return (EReference)valueRangeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getValueRange_UpperEndpoint()
  {
    return (EReference)valueRangeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLowerEndpoint()
  {
    return lowerEndpointEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLowerEndpoint_Value()
  {
    return (EReference)lowerEndpointEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLowerEndpoint_Closed()
  {
    return (EAttribute)lowerEndpointEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUpperEndpoint()
  {
    return upperEndpointEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getUpperEndpoint_Closed()
  {
    return (EAttribute)upperEndpointEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getUpperEndpoint_Value()
  {
    return (EReference)upperEndpointEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLowerEndValue()
  {
    return lowerEndValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLowerEndValue_Value()
  {
    return (EReference)lowerEndValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getLowerEndValue_MinValue()
  {
    return (EAttribute)lowerEndValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getUpperEndValue()
  {
    return upperEndValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getUpperEndValue_Value()
  {
    return (EReference)upperEndValueEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getUpperEndValue_MaxValue()
  {
    return (EAttribute)upperEndValueEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSizeConstraint()
  {
    return sizeConstraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSizeConstraint_Constraint()
  {
    return (EReference)sizeConstraintEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTypeConstraint()
  {
    return typeConstraintEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getTypeConstraint_Type()
  {
    return (EReference)typeConstraintEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPermittedAlphabet()
  {
    return permittedAlphabetEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getPermittedAlphabet_Constraint()
  {
    return (EReference)permittedAlphabetEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getValueRangeValue()
  {
    return valueRangeValueEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExceptionSpec()
  {
    return exceptionSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExceptionSpec_Exception()
  {
    return (EReference)exceptionSpecEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExceptionIdentification()
  {
    return exceptionIdentificationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getExceptionIdentification_Number()
  {
    return (EAttribute)exceptionIdentificationEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExceptionIdentification_DefValue()
  {
    return (EReference)exceptionIdentificationEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExceptionIdentification_Type()
  {
    return (EReference)exceptionIdentificationEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExceptionIdentification_Value()
  {
    return (EReference)exceptionIdentificationEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCString()
  {
    return cStringEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getSpecialValue()
  {
    return specialValueEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EEnum getBOOL()
  {
    return boolEEnum;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Asn1Factory getAsn1Factory()
  {
    return (Asn1Factory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    asn1EClass = createEClass(ASN1);
    createEReference(asn1EClass, ASN1__MODULE_DEFINITION);

    moduleDefinitionEClass = createEClass(MODULE_DEFINITION);
    createEReference(moduleDefinitionEClass, MODULE_DEFINITION__MODULE_IDENTIFIER);
    createEReference(moduleDefinitionEClass, MODULE_DEFINITION__ENCODING_REFERENCE_DEFAULT);
    createEAttribute(moduleDefinitionEClass, MODULE_DEFINITION__TAG_DEFAULT);
    createEAttribute(moduleDefinitionEClass, MODULE_DEFINITION__EXTENSION_DEFAULT);
    createEReference(moduleDefinitionEClass, MODULE_DEFINITION__MODULE_BODY);

    moduleIdentifierEClass = createEClass(MODULE_IDENTIFIER);
    createEAttribute(moduleIdentifierEClass, MODULE_IDENTIFIER__MODULE_REFERENCE);

    encodingReferenceDefaultEClass = createEClass(ENCODING_REFERENCE_DEFAULT);
    createEAttribute(encodingReferenceDefaultEClass, ENCODING_REFERENCE_DEFAULT__NAME);

    moduleBodyEClass = createEClass(MODULE_BODY);
    createEReference(moduleBodyEClass, MODULE_BODY__EXPORTS);
    createEReference(moduleBodyEClass, MODULE_BODY__IMPORTS);
    createEReference(moduleBodyEClass, MODULE_BODY__ASSIGNMENTS);

    exportsEClass = createEClass(EXPORTS);
    createEReference(exportsEClass, EXPORTS__SYMBOLS_EXPORTED);

    importsEClass = createEClass(IMPORTS);
    createEReference(importsEClass, IMPORTS__SYMBOLS_IMPORTED);
    createEAttribute(importsEClass, IMPORTS__MODULEREFERENCE);

    definedTypeEClass = createEClass(DEFINED_TYPE);
    createEReference(definedTypeEClass, DEFINED_TYPE__TARGET);

    definedValueEClass = createEClass(DEFINED_VALUE);
    createEReference(definedValueEClass, DEFINED_VALUE__TARGET);

    assignmentEClass = createEClass(ASSIGNMENT);
    createEAttribute(assignmentEClass, ASSIGNMENT__NAME);

    typeAssignmentEClass = createEClass(TYPE_ASSIGNMENT);
    createEReference(typeAssignmentEClass, TYPE_ASSIGNMENT__TYPE);
    createEReference(typeAssignmentEClass, TYPE_ASSIGNMENT__CONSTRAINT);

    valueAssignmentEClass = createEClass(VALUE_ASSIGNMENT);

    simpleValueAssignmentEClass = createEClass(SIMPLE_VALUE_ASSIGNMENT);
    createEReference(simpleValueAssignmentEClass, SIMPLE_VALUE_ASSIGNMENT__TYPE);
    createEReference(simpleValueAssignmentEClass, SIMPLE_VALUE_ASSIGNMENT__VALUE);

    choiceValueAssignmentEClass = createEClass(CHOICE_VALUE_ASSIGNMENT);
    createEReference(choiceValueAssignmentEClass, CHOICE_VALUE_ASSIGNMENT__TYPE);
    createEReference(choiceValueAssignmentEClass, CHOICE_VALUE_ASSIGNMENT__VALUE);

    objectIdentifierValueAssignmentEClass = createEClass(OBJECT_IDENTIFIER_VALUE_ASSIGNMENT);
    createEReference(objectIdentifierValueAssignmentEClass, OBJECT_IDENTIFIER_VALUE_ASSIGNMENT__TYPE);
    createEReference(objectIdentifierValueAssignmentEClass, OBJECT_IDENTIFIER_VALUE_ASSIGNMENT__VALUE);

    sequenceValueAssignmentEClass = createEClass(SEQUENCE_VALUE_ASSIGNMENT);
    createEReference(sequenceValueAssignmentEClass, SEQUENCE_VALUE_ASSIGNMENT__TYPE);
    createEReference(sequenceValueAssignmentEClass, SEQUENCE_VALUE_ASSIGNMENT__VALUE);

    typeEClass = createEClass(TYPE);

    builtinTypeEClass = createEClass(BUILTIN_TYPE);

    simpleTypeEClass = createEClass(SIMPLE_TYPE);

    containerTypeEClass = createEClass(CONTAINER_TYPE);

    referencedTypeEClass = createEClass(REFERENCED_TYPE);

    namedTypeEClass = createEClass(NAMED_TYPE);
    createEAttribute(namedTypeEClass, NAMED_TYPE__NAME);
    createEReference(namedTypeEClass, NAMED_TYPE__TYPE);
    createEReference(namedTypeEClass, NAMED_TYPE__CONSTRAINT);

    valueEClass = createEClass(VALUE);

    builtinValueEClass = createEClass(BUILTIN_VALUE);

    simpleValueEClass = createEClass(SIMPLE_VALUE);

    containerValueEClass = createEClass(CONTAINER_VALUE);

    referencedValueEClass = createEClass(REFERENCED_VALUE);

    namedValueEClass = createEClass(NAMED_VALUE);
    createEAttribute(namedValueEClass, NAMED_VALUE__IDENTIFIER);
    createEReference(namedValueEClass, NAMED_VALUE__VALUE);

    booleanTypeEClass = createEClass(BOOLEAN_TYPE);

    booleanValueEClass = createEClass(BOOLEAN_VALUE);
    createEAttribute(booleanValueEClass, BOOLEAN_VALUE__VALUE);

    integerTypeEClass = createEClass(INTEGER_TYPE);
    createEReference(integerTypeEClass, INTEGER_TYPE__NAMED_NUMBER_LIST);

    namedNumberEClass = createEClass(NAMED_NUMBER);
    createEAttribute(namedNumberEClass, NAMED_NUMBER__NAME);
    createEReference(namedNumberEClass, NAMED_NUMBER__VALUE);

    integerValueEClass = createEClass(INTEGER_VALUE);
    createEAttribute(integerValueEClass, INTEGER_VALUE__VALUE);

    enumeratedTypeEClass = createEClass(ENUMERATED_TYPE);
    createEReference(enumeratedTypeEClass, ENUMERATED_TYPE__EXCEPTION);
    createEReference(enumeratedTypeEClass, ENUMERATED_TYPE__ENUMS);

    enumerationItemEClass = createEClass(ENUMERATION_ITEM);
    createEAttribute(enumerationItemEClass, ENUMERATION_ITEM__NAME);
    createEReference(enumerationItemEClass, ENUMERATION_ITEM__NUMBER);
    createEAttribute(enumerationItemEClass, ENUMERATION_ITEM__UNSPEC);

    realTypeEClass = createEClass(REAL_TYPE);

    realValueEClass = createEClass(REAL_VALUE);

    numericRealValueEClass = createEClass(NUMERIC_REAL_VALUE);
    createEAttribute(numericRealValueEClass, NUMERIC_REAL_VALUE__VALUE);
    createEReference(numericRealValueEClass, NUMERIC_REAL_VALUE__SEQUENCE_VALUE);

    realSequenceValueEClass = createEClass(REAL_SEQUENCE_VALUE);
    createEAttribute(realSequenceValueEClass, REAL_SEQUENCE_VALUE__MANTISSA);
    createEAttribute(realSequenceValueEClass, REAL_SEQUENCE_VALUE__BASE);
    createEAttribute(realSequenceValueEClass, REAL_SEQUENCE_VALUE__EXPONENT);

    specialRealValueEClass = createEClass(SPECIAL_REAL_VALUE);
    createEAttribute(specialRealValueEClass, SPECIAL_REAL_VALUE__VALUE);

    bitStringTypeEClass = createEClass(BIT_STRING_TYPE);
    createEReference(bitStringTypeEClass, BIT_STRING_TYPE__NAMED_BITS);

    namedBitEClass = createEClass(NAMED_BIT);
    createEAttribute(namedBitEClass, NAMED_BIT__IDENTIFIER);
    createEAttribute(namedBitEClass, NAMED_BIT__NUMBER);
    createEReference(namedBitEClass, NAMED_BIT__VALUE);

    bitStringValueEClass = createEClass(BIT_STRING_VALUE);
    createEAttribute(bitStringValueEClass, BIT_STRING_VALUE__IDENTIFIERS);

    octetStringTypeEClass = createEClass(OCTET_STRING_TYPE);

    octetStringValueEClass = createEClass(OCTET_STRING_VALUE);
    createEAttribute(octetStringValueEClass, OCTET_STRING_VALUE__BIN_STRING);
    createEAttribute(octetStringValueEClass, OCTET_STRING_VALUE__HEX_STRING);
    createEReference(octetStringValueEClass, OCTET_STRING_VALUE__ACONTAINING_VALUE);

    nullTypeEClass = createEClass(NULL_TYPE);

    nullValueEClass = createEClass(NULL_VALUE);
    createEAttribute(nullValueEClass, NULL_VALUE__VALUE);

    sequenceTypeEClass = createEClass(SEQUENCE_TYPE);
    createEReference(sequenceTypeEClass, SEQUENCE_TYPE__COMPONENT_TYPE_LIST);
    createEReference(sequenceTypeEClass, SEQUENCE_TYPE__EXTENSION_AND_EXCEPTION);
    createEReference(sequenceTypeEClass, SEQUENCE_TYPE__EXTENSION_ADDITIONS);

    extensionAndExceptionEClass = createEClass(EXTENSION_AND_EXCEPTION);
    createEReference(extensionAndExceptionEClass, EXTENSION_AND_EXCEPTION__EXCEPTION);

    extensionAdditionsEClass = createEClass(EXTENSION_ADDITIONS);
    createEReference(extensionAdditionsEClass, EXTENSION_ADDITIONS__EXTENSION_ADDITIONS);

    componentTypeListEClass = createEClass(COMPONENT_TYPE_LIST);
    createEReference(componentTypeListEClass, COMPONENT_TYPE_LIST__COMPONENT_TYPES);

    versionNumberEClass = createEClass(VERSION_NUMBER);
    createEAttribute(versionNumberEClass, VERSION_NUMBER__NUMBER);

    extensionAdditionEClass = createEClass(EXTENSION_ADDITION);

    extensionAdditionGroupEClass = createEClass(EXTENSION_ADDITION_GROUP);
    createEReference(extensionAdditionGroupEClass, EXTENSION_ADDITION_GROUP__VERSION_NUMBER);
    createEReference(extensionAdditionGroupEClass, EXTENSION_ADDITION_GROUP__COMPONENT_TYPE_LIST);

    componentTypeEClass = createEClass(COMPONENT_TYPE);

    namedComponentTypeEClass = createEClass(NAMED_COMPONENT_TYPE);
    createEReference(namedComponentTypeEClass, NAMED_COMPONENT_TYPE__NAMED_TYPE);
    createEReference(namedComponentTypeEClass, NAMED_COMPONENT_TYPE__VALUE);

    componentOfTypeEClass = createEClass(COMPONENT_OF_TYPE);
    createEReference(componentOfTypeEClass, COMPONENT_OF_TYPE__TYPE);

    anyDefinedNamedTypeEClass = createEClass(ANY_DEFINED_NAMED_TYPE);
    createEAttribute(anyDefinedNamedTypeEClass, ANY_DEFINED_NAMED_TYPE__NAME);
    createEReference(anyDefinedNamedTypeEClass, ANY_DEFINED_NAMED_TYPE__DEFINED_TYPE);

    sequenceValueEClass = createEClass(SEQUENCE_VALUE);
    createEReference(sequenceValueEClass, SEQUENCE_VALUE__COMPONENT_VALUE_LIST);

    componentValueListEClass = createEClass(COMPONENT_VALUE_LIST);
    createEReference(componentValueListEClass, COMPONENT_VALUE_LIST__VALUES);

    sequenceOfTypeEClass = createEClass(SEQUENCE_OF_TYPE);
    createEReference(sequenceOfTypeEClass, SEQUENCE_OF_TYPE__CONSTRAINT);
    createEReference(sequenceOfTypeEClass, SEQUENCE_OF_TYPE__TYPE);

    setTypeEClass = createEClass(SET_TYPE);
    createEReference(setTypeEClass, SET_TYPE__EXTENSION_AND_EXCEPTION);
    createEReference(setTypeEClass, SET_TYPE__COMPONENT_TYPE_LIST);

    setOfTypeEClass = createEClass(SET_OF_TYPE);
    createEReference(setOfTypeEClass, SET_OF_TYPE__CONSTRAINT);
    createEReference(setOfTypeEClass, SET_OF_TYPE__TYPE);

    choiceTypeEClass = createEClass(CHOICE_TYPE);
    createEReference(choiceTypeEClass, CHOICE_TYPE__ALTERNATIVE_TYPE_LIST);
    createEReference(choiceTypeEClass, CHOICE_TYPE__EXTENSION_AND_EXCEPTION);
    createEReference(choiceTypeEClass, CHOICE_TYPE__EXTENSION_ADDITION_ALTERNATIVES_LIST);

    alternativeTypeListEClass = createEClass(ALTERNATIVE_TYPE_LIST);
    createEReference(alternativeTypeListEClass, ALTERNATIVE_TYPE_LIST__NAMED_TYPES);

    extensionAdditionAlternativesGroupEClass = createEClass(EXTENSION_ADDITION_ALTERNATIVES_GROUP);
    createEReference(extensionAdditionAlternativesGroupEClass, EXTENSION_ADDITION_ALTERNATIVES_GROUP__VERSION_NUMBER);
    createEReference(extensionAdditionAlternativesGroupEClass, EXTENSION_ADDITION_ALTERNATIVES_GROUP__ALTERNATIVE_TYPE_LIST);

    extensionAdditionAlternativeEClass = createEClass(EXTENSION_ADDITION_ALTERNATIVE);

    extensionAdditionAlternativesListEClass = createEClass(EXTENSION_ADDITION_ALTERNATIVES_LIST);
    createEReference(extensionAdditionAlternativesListEClass, EXTENSION_ADDITION_ALTERNATIVES_LIST__EXTENSION_ADDITION_ALTERNATIVE);

    choiceValueEClass = createEClass(CHOICE_VALUE);
    createEAttribute(choiceValueEClass, CHOICE_VALUE__IDENTIFIER);
    createEReference(choiceValueEClass, CHOICE_VALUE__VALUE);

    prefixedTypeEClass = createEClass(PREFIXED_TYPE);

    taggedTypeEClass = createEClass(TAGGED_TYPE);
    createEReference(taggedTypeEClass, TAGGED_TYPE__TAG);
    createEAttribute(taggedTypeEClass, TAGGED_TYPE__TAG_SPEC);
    createEReference(taggedTypeEClass, TAGGED_TYPE__TYPE);

    tagEClass = createEClass(TAG);
    createEAttribute(tagEClass, TAG__ENCODING_REFERENCE);
    createEAttribute(tagEClass, TAG__TAG_CLASS);
    createEReference(tagEClass, TAG__CLASS_NUMBER);

    classNumberEClass = createEClass(CLASS_NUMBER);
    createEAttribute(classNumberEClass, CLASS_NUMBER__NUMBER);
    createEReference(classNumberEClass, CLASS_NUMBER__VALUE);

    objectIdentifierTypeEClass = createEClass(OBJECT_IDENTIFIER_TYPE);

    objectIdentifierValueEClass = createEClass(OBJECT_IDENTIFIER_VALUE);
    createEReference(objectIdentifierValueEClass, OBJECT_IDENTIFIER_VALUE__COMPONENTS);

    objIdComponentsEClass = createEClass(OBJ_ID_COMPONENTS);
    createEAttribute(objIdComponentsEClass, OBJ_ID_COMPONENTS__NUMBER);

    timeTypeEClass = createEClass(TIME_TYPE);

    dateTypeEClass = createEClass(DATE_TYPE);

    timeOfDayTypeEClass = createEClass(TIME_OF_DAY_TYPE);

    dateTimeTypeEClass = createEClass(DATE_TIME_TYPE);

    durationTypeEClass = createEClass(DURATION_TYPE);

    characterStringTypeEClass = createEClass(CHARACTER_STRING_TYPE);

    characterStringValueEClass = createEClass(CHARACTER_STRING_VALUE);

    restrictedCharacterStringTypeEClass = createEClass(RESTRICTED_CHARACTER_STRING_TYPE);

    bmpStringEClass = createEClass(BMP_STRING);

    generalStringEClass = createEClass(GENERAL_STRING);

    graphicStringEClass = createEClass(GRAPHIC_STRING);

    ia5StringEClass = createEClass(IA5_STRING);

    iso646StringEClass = createEClass(ISO646_STRING);

    numericStringEClass = createEClass(NUMERIC_STRING);

    printableStringEClass = createEClass(PRINTABLE_STRING);

    teletexStringEClass = createEClass(TELETEX_STRING);

    t61StringEClass = createEClass(T61_STRING);

    universalStringEClass = createEClass(UNIVERSAL_STRING);

    utf8StringEClass = createEClass(UTF8_STRING);

    videotexStringEClass = createEClass(VIDEOTEX_STRING);

    visibleStringEClass = createEClass(VISIBLE_STRING);

    restrictedCharacterStringValueEClass = createEClass(RESTRICTED_CHARACTER_STRING_VALUE);

    unrestrictedCharacterStringTypeEClass = createEClass(UNRESTRICTED_CHARACTER_STRING_TYPE);

    usefulTypeEClass = createEClass(USEFUL_TYPE);
    createEAttribute(usefulTypeEClass, USEFUL_TYPE__TYPE);

    constraintEClass = createEClass(CONSTRAINT);
    createEReference(constraintEClass, CONSTRAINT__CONSTRAINT_SPEC);
    createEReference(constraintEClass, CONSTRAINT__EXCEPTION_SPEC);

    constraintSpecEClass = createEClass(CONSTRAINT_SPEC);

    subtypeConstraintEClass = createEClass(SUBTYPE_CONSTRAINT);

    elementSetSpecsEClass = createEClass(ELEMENT_SET_SPECS);
    createEReference(elementSetSpecsEClass, ELEMENT_SET_SPECS__ELEMENT_SET_SPEC);

    elementSetSpecEClass = createEClass(ELEMENT_SET_SPEC);
    createEReference(elementSetSpecEClass, ELEMENT_SET_SPEC__EXCLUSIONS);

    unionsEClass = createEClass(UNIONS);
    createEReference(unionsEClass, UNIONS__INTERSECTIONS);

    intersectionsEClass = createEClass(INTERSECTIONS);
    createEReference(intersectionsEClass, INTERSECTIONS__INTERSECTION_ELEMENTS);

    intersectionElementsEClass = createEClass(INTERSECTION_ELEMENTS);
    createEReference(intersectionElementsEClass, INTERSECTION_ELEMENTS__ELEMENTS);
    createEReference(intersectionElementsEClass, INTERSECTION_ELEMENTS__EXCLUSIONS);

    exclusionsEClass = createEClass(EXCLUSIONS);
    createEReference(exclusionsEClass, EXCLUSIONS__ELEMENTS);

    elementsEClass = createEClass(ELEMENTS);

    subtypeElementsEClass = createEClass(SUBTYPE_ELEMENTS);

    singleValueEClass = createEClass(SINGLE_VALUE);
    createEReference(singleValueEClass, SINGLE_VALUE__VALUE);

    containedSubtypeEClass = createEClass(CONTAINED_SUBTYPE);
    createEReference(containedSubtypeEClass, CONTAINED_SUBTYPE__TYPE);

    valueRangeEClass = createEClass(VALUE_RANGE);
    createEReference(valueRangeEClass, VALUE_RANGE__LOWER_ENDPOINT);
    createEReference(valueRangeEClass, VALUE_RANGE__UPPER_ENDPOINT);

    lowerEndpointEClass = createEClass(LOWER_ENDPOINT);
    createEReference(lowerEndpointEClass, LOWER_ENDPOINT__VALUE);
    createEAttribute(lowerEndpointEClass, LOWER_ENDPOINT__CLOSED);

    upperEndpointEClass = createEClass(UPPER_ENDPOINT);
    createEAttribute(upperEndpointEClass, UPPER_ENDPOINT__CLOSED);
    createEReference(upperEndpointEClass, UPPER_ENDPOINT__VALUE);

    lowerEndValueEClass = createEClass(LOWER_END_VALUE);
    createEReference(lowerEndValueEClass, LOWER_END_VALUE__VALUE);
    createEAttribute(lowerEndValueEClass, LOWER_END_VALUE__MIN_VALUE);

    upperEndValueEClass = createEClass(UPPER_END_VALUE);
    createEReference(upperEndValueEClass, UPPER_END_VALUE__VALUE);
    createEAttribute(upperEndValueEClass, UPPER_END_VALUE__MAX_VALUE);

    sizeConstraintEClass = createEClass(SIZE_CONSTRAINT);
    createEReference(sizeConstraintEClass, SIZE_CONSTRAINT__CONSTRAINT);

    typeConstraintEClass = createEClass(TYPE_CONSTRAINT);
    createEReference(typeConstraintEClass, TYPE_CONSTRAINT__TYPE);

    permittedAlphabetEClass = createEClass(PERMITTED_ALPHABET);
    createEReference(permittedAlphabetEClass, PERMITTED_ALPHABET__CONSTRAINT);

    valueRangeValueEClass = createEClass(VALUE_RANGE_VALUE);

    exceptionSpecEClass = createEClass(EXCEPTION_SPEC);
    createEReference(exceptionSpecEClass, EXCEPTION_SPEC__EXCEPTION);

    exceptionIdentificationEClass = createEClass(EXCEPTION_IDENTIFICATION);
    createEAttribute(exceptionIdentificationEClass, EXCEPTION_IDENTIFICATION__NUMBER);
    createEReference(exceptionIdentificationEClass, EXCEPTION_IDENTIFICATION__DEF_VALUE);
    createEReference(exceptionIdentificationEClass, EXCEPTION_IDENTIFICATION__TYPE);
    createEReference(exceptionIdentificationEClass, EXCEPTION_IDENTIFICATION__VALUE);

    cStringEClass = createEClass(CSTRING);

    // Create enums
    specialValueEEnum = createEEnum(SPECIAL_VALUE);
    boolEEnum = createEEnum(BOOL);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    definedTypeEClass.getESuperTypes().add(this.getReferencedType());
    definedValueEClass.getESuperTypes().add(this.getReferencedValue());
    definedValueEClass.getESuperTypes().add(this.getObjIdComponents());
    typeAssignmentEClass.getESuperTypes().add(this.getAssignment());
    valueAssignmentEClass.getESuperTypes().add(this.getAssignment());
    simpleValueAssignmentEClass.getESuperTypes().add(this.getValueAssignment());
    choiceValueAssignmentEClass.getESuperTypes().add(this.getValueAssignment());
    objectIdentifierValueAssignmentEClass.getESuperTypes().add(this.getValueAssignment());
    sequenceValueAssignmentEClass.getESuperTypes().add(this.getValueAssignment());
    builtinTypeEClass.getESuperTypes().add(this.getType());
    simpleTypeEClass.getESuperTypes().add(this.getBuiltinType());
    containerTypeEClass.getESuperTypes().add(this.getBuiltinType());
    referencedTypeEClass.getESuperTypes().add(this.getType());
    namedTypeEClass.getESuperTypes().add(this.getExtensionAdditionAlternative());
    builtinValueEClass.getESuperTypes().add(this.getValue());
    simpleValueEClass.getESuperTypes().add(this.getBuiltinValue());
    containerValueEClass.getESuperTypes().add(this.getBuiltinValue());
    referencedValueEClass.getESuperTypes().add(this.getValue());
    booleanTypeEClass.getESuperTypes().add(this.getSimpleType());
    booleanValueEClass.getESuperTypes().add(this.getSimpleValue());
    integerTypeEClass.getESuperTypes().add(this.getSimpleType());
    namedNumberEClass.getESuperTypes().add(this.getObjIdComponents());
    integerValueEClass.getESuperTypes().add(this.getSimpleValue());
    integerValueEClass.getESuperTypes().add(this.getValueRangeValue());
    enumeratedTypeEClass.getESuperTypes().add(this.getSimpleType());
    realTypeEClass.getESuperTypes().add(this.getSimpleType());
    realValueEClass.getESuperTypes().add(this.getSimpleValue());
    realValueEClass.getESuperTypes().add(this.getValueRangeValue());
    numericRealValueEClass.getESuperTypes().add(this.getRealValue());
    specialRealValueEClass.getESuperTypes().add(this.getRealValue());
    bitStringTypeEClass.getESuperTypes().add(this.getSimpleType());
    octetStringTypeEClass.getESuperTypes().add(this.getSimpleType());
    octetStringValueEClass.getESuperTypes().add(this.getSimpleValue());
    nullTypeEClass.getESuperTypes().add(this.getSimpleType());
    sequenceTypeEClass.getESuperTypes().add(this.getContainerType());
    extensionAdditionGroupEClass.getESuperTypes().add(this.getExtensionAddition());
    componentTypeEClass.getESuperTypes().add(this.getExtensionAddition());
    namedComponentTypeEClass.getESuperTypes().add(this.getComponentType());
    componentOfTypeEClass.getESuperTypes().add(this.getComponentType());
    anyDefinedNamedTypeEClass.getESuperTypes().add(this.getComponentType());
    sequenceOfTypeEClass.getESuperTypes().add(this.getContainerType());
    setTypeEClass.getESuperTypes().add(this.getContainerType());
    setOfTypeEClass.getESuperTypes().add(this.getContainerType());
    choiceTypeEClass.getESuperTypes().add(this.getContainerType());
    extensionAdditionAlternativesGroupEClass.getESuperTypes().add(this.getExtensionAdditionAlternative());
    choiceValueEClass.getESuperTypes().add(this.getContainerValue());
    prefixedTypeEClass.getESuperTypes().add(this.getBuiltinType());
    taggedTypeEClass.getESuperTypes().add(this.getPrefixedType());
    objectIdentifierTypeEClass.getESuperTypes().add(this.getSimpleType());
    timeTypeEClass.getESuperTypes().add(this.getSimpleType());
    dateTypeEClass.getESuperTypes().add(this.getSimpleType());
    timeOfDayTypeEClass.getESuperTypes().add(this.getSimpleType());
    dateTimeTypeEClass.getESuperTypes().add(this.getSimpleType());
    durationTypeEClass.getESuperTypes().add(this.getSimpleType());
    characterStringTypeEClass.getESuperTypes().add(this.getSimpleType());
    characterStringValueEClass.getESuperTypes().add(this.getSimpleValue());
    restrictedCharacterStringTypeEClass.getESuperTypes().add(this.getCharacterStringType());
    bmpStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    generalStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    graphicStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    ia5StringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    iso646StringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    numericStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    printableStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    teletexStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    t61StringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    universalStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    utf8StringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    videotexStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    visibleStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringType());
    restrictedCharacterStringValueEClass.getESuperTypes().add(this.getCharacterStringValue());
    restrictedCharacterStringValueEClass.getESuperTypes().add(this.getValueRangeValue());
    usefulTypeEClass.getESuperTypes().add(this.getReferencedType());
    subtypeConstraintEClass.getESuperTypes().add(this.getConstraintSpec());
    elementSetSpecsEClass.getESuperTypes().add(this.getSubtypeConstraint());
    unionsEClass.getESuperTypes().add(this.getElementSetSpec());
    subtypeElementsEClass.getESuperTypes().add(this.getElements());
    singleValueEClass.getESuperTypes().add(this.getSubtypeElements());
    containedSubtypeEClass.getESuperTypes().add(this.getSubtypeElements());
    valueRangeEClass.getESuperTypes().add(this.getSubtypeElements());
    sizeConstraintEClass.getESuperTypes().add(this.getSubtypeElements());
    typeConstraintEClass.getESuperTypes().add(this.getSubtypeElements());
    permittedAlphabetEClass.getESuperTypes().add(this.getSubtypeElements());
    cStringEClass.getESuperTypes().add(this.getRestrictedCharacterStringValue());

    // Initialize classes and features; add operations and parameters
    initEClass(asn1EClass, Asn1.class, "Asn1", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAsn1_ModuleDefinition(), this.getModuleDefinition(), null, "moduleDefinition", null, 0, -1, Asn1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(moduleDefinitionEClass, ModuleDefinition.class, "ModuleDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getModuleDefinition_ModuleIdentifier(), this.getModuleIdentifier(), null, "moduleIdentifier", null, 0, 1, ModuleDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getModuleDefinition_EncodingReferenceDefault(), this.getEncodingReferenceDefault(), null, "encodingReferenceDefault", null, 0, 1, ModuleDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getModuleDefinition_TagDefault(), ecorePackage.getEString(), "tagDefault", null, 0, 1, ModuleDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getModuleDefinition_ExtensionDefault(), ecorePackage.getEString(), "extensionDefault", null, 0, 1, ModuleDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getModuleDefinition_ModuleBody(), this.getModuleBody(), null, "moduleBody", null, 0, 1, ModuleDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(moduleIdentifierEClass, ModuleIdentifier.class, "ModuleIdentifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getModuleIdentifier_ModuleReference(), ecorePackage.getEString(), "moduleReference", null, 0, 1, ModuleIdentifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(encodingReferenceDefaultEClass, EncodingReferenceDefault.class, "EncodingReferenceDefault", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getEncodingReferenceDefault_Name(), ecorePackage.getEString(), "name", null, 0, 1, EncodingReferenceDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(moduleBodyEClass, ModuleBody.class, "ModuleBody", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getModuleBody_Exports(), this.getExports(), null, "exports", null, 0, -1, ModuleBody.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getModuleBody_Imports(), this.getImports(), null, "imports", null, 0, -1, ModuleBody.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getModuleBody_Assignments(), this.getAssignment(), null, "assignments", null, 0, -1, ModuleBody.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(exportsEClass, Exports.class, "Exports", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExports_SymbolsExported(), this.getAssignment(), null, "symbolsExported", null, 0, -1, Exports.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(importsEClass, Imports.class, "Imports", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getImports_SymbolsImported(), this.getAssignment(), null, "symbolsImported", null, 0, -1, Imports.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getImports_Modulereference(), ecorePackage.getEString(), "modulereference", null, 0, 1, Imports.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(definedTypeEClass, DefinedType.class, "DefinedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDefinedType_Target(), this.getTypeAssignment(), null, "target", null, 0, 1, DefinedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(definedValueEClass, DefinedValue.class, "DefinedValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDefinedValue_Target(), this.getValueAssignment(), null, "target", null, 0, 1, DefinedValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(assignmentEClass, Assignment.class, "Assignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAssignment_Name(), ecorePackage.getEString(), "name", null, 0, 1, Assignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(typeAssignmentEClass, TypeAssignment.class, "TypeAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTypeAssignment_Type(), this.getType(), null, "type", null, 0, 1, TypeAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTypeAssignment_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, TypeAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(valueAssignmentEClass, ValueAssignment.class, "ValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(simpleValueAssignmentEClass, SimpleValueAssignment.class, "SimpleValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSimpleValueAssignment_Type(), this.getSimpleType(), null, "type", null, 0, 1, SimpleValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSimpleValueAssignment_Value(), this.getSimpleValue(), null, "value", null, 0, 1, SimpleValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(choiceValueAssignmentEClass, ChoiceValueAssignment.class, "ChoiceValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getChoiceValueAssignment_Type(), this.getTypeAssignment(), null, "type", null, 0, 1, ChoiceValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getChoiceValueAssignment_Value(), this.getChoiceValue(), null, "value", null, 0, 1, ChoiceValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(objectIdentifierValueAssignmentEClass, ObjectIdentifierValueAssignment.class, "ObjectIdentifierValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getObjectIdentifierValueAssignment_Type(), this.getObjectIdentifierType(), null, "type", null, 0, 1, ObjectIdentifierValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getObjectIdentifierValueAssignment_Value(), this.getObjectIdentifierValue(), null, "value", null, 0, 1, ObjectIdentifierValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sequenceValueAssignmentEClass, SequenceValueAssignment.class, "SequenceValueAssignment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSequenceValueAssignment_Type(), this.getTypeAssignment(), null, "type", null, 0, 1, SequenceValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSequenceValueAssignment_Value(), this.getSequenceValue(), null, "value", null, 0, 1, SequenceValueAssignment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(typeEClass, Type.class, "Type", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(builtinTypeEClass, BuiltinType.class, "BuiltinType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(simpleTypeEClass, SimpleType.class, "SimpleType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(containerTypeEClass, ContainerType.class, "ContainerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(referencedTypeEClass, ReferencedType.class, "ReferencedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(namedTypeEClass, NamedType.class, "NamedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNamedType_Name(), ecorePackage.getEString(), "name", null, 0, 1, NamedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedType_Type(), this.getType(), null, "type", null, 0, 1, NamedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedType_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, NamedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(valueEClass, Value.class, "Value", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(builtinValueEClass, BuiltinValue.class, "BuiltinValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(simpleValueEClass, SimpleValue.class, "SimpleValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(containerValueEClass, ContainerValue.class, "ContainerValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(referencedValueEClass, ReferencedValue.class, "ReferencedValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(namedValueEClass, NamedValue.class, "NamedValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNamedValue_Identifier(), ecorePackage.getEString(), "identifier", null, 0, 1, NamedValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedValue_Value(), this.getValue(), null, "value", null, 0, 1, NamedValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(booleanTypeEClass, BooleanType.class, "BooleanType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(booleanValueEClass, BooleanValue.class, "BooleanValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBooleanValue_Value(), this.getBOOL(), "value", null, 0, 1, BooleanValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(integerTypeEClass, IntegerType.class, "IntegerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getIntegerType_NamedNumberList(), this.getNamedNumber(), null, "namedNumberList", null, 0, -1, IntegerType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(namedNumberEClass, NamedNumber.class, "NamedNumber", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNamedNumber_Name(), ecorePackage.getEString(), "name", null, 0, 1, NamedNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedNumber_Value(), this.getDefinedValue(), null, "value", null, 0, 1, NamedNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(integerValueEClass, IntegerValue.class, "IntegerValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getIntegerValue_Value(), ecorePackage.getELong(), "value", null, 0, 1, IntegerValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumeratedTypeEClass, EnumeratedType.class, "EnumeratedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getEnumeratedType_Exception(), this.getExceptionSpec(), null, "exception", null, 0, 1, EnumeratedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEnumeratedType_Enums(), this.getEnumerationItem(), null, "enums", null, 0, -1, EnumeratedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(enumerationItemEClass, EnumerationItem.class, "EnumerationItem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getEnumerationItem_Name(), ecorePackage.getEString(), "name", null, 0, 1, EnumerationItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEnumerationItem_Number(), this.getNamedNumber(), null, "number", null, 0, 1, EnumerationItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getEnumerationItem_Unspec(), ecorePackage.getEString(), "unspec", null, 0, 1, EnumerationItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(realTypeEClass, RealType.class, "RealType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(realValueEClass, RealValue.class, "RealValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(numericRealValueEClass, NumericRealValue.class, "NumericRealValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNumericRealValue_Value(), ecorePackage.getEDouble(), "value", null, 0, 1, NumericRealValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNumericRealValue_SequenceValue(), this.getRealSequenceValue(), null, "sequenceValue", null, 0, 1, NumericRealValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(realSequenceValueEClass, RealSequenceValue.class, "RealSequenceValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRealSequenceValue_Mantissa(), ecorePackage.getELong(), "mantissa", null, 0, 1, RealSequenceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRealSequenceValue_Base(), ecorePackage.getELong(), "base", null, 0, 1, RealSequenceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getRealSequenceValue_Exponent(), ecorePackage.getELong(), "exponent", null, 0, 1, RealSequenceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(specialRealValueEClass, SpecialRealValue.class, "SpecialRealValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSpecialRealValue_Value(), this.getSpecialValue(), "value", null, 0, 1, SpecialRealValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(bitStringTypeEClass, BitStringType.class, "BitStringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getBitStringType_NamedBits(), this.getNamedBit(), null, "namedBits", null, 0, -1, BitStringType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(namedBitEClass, NamedBit.class, "NamedBit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNamedBit_Identifier(), ecorePackage.getEString(), "identifier", null, 0, 1, NamedBit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getNamedBit_Number(), ecorePackage.getELong(), "number", null, 0, 1, NamedBit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedBit_Value(), this.getDefinedValue(), null, "value", null, 0, 1, NamedBit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(bitStringValueEClass, BitStringValue.class, "BitStringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBitStringValue_Identifiers(), ecorePackage.getEString(), "identifiers", null, 0, -1, BitStringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(octetStringTypeEClass, OctetStringType.class, "OctetStringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(octetStringValueEClass, OctetStringValue.class, "OctetStringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getOctetStringValue_BinString(), ecorePackage.getEString(), "binString", null, 0, 1, OctetStringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getOctetStringValue_HexString(), ecorePackage.getEString(), "hexString", null, 0, 1, OctetStringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getOctetStringValue_AcontainingValue(), this.getValue(), null, "acontainingValue", null, 0, 1, OctetStringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(nullTypeEClass, NullType.class, "NullType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(nullValueEClass, NullValue.class, "NullValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNullValue_Value(), ecorePackage.getEString(), "value", null, 0, 1, NullValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sequenceTypeEClass, SequenceType.class, "SequenceType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSequenceType_ComponentTypeList(), this.getComponentTypeList(), null, "componentTypeList", null, 0, 1, SequenceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSequenceType_ExtensionAndException(), this.getExtensionAndException(), null, "extensionAndException", null, 0, 1, SequenceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSequenceType_ExtensionAdditions(), this.getExtensionAdditions(), null, "extensionAdditions", null, 0, 1, SequenceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(extensionAndExceptionEClass, ExtensionAndException.class, "ExtensionAndException", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExtensionAndException_Exception(), this.getExceptionSpec(), null, "exception", null, 0, 1, ExtensionAndException.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(extensionAdditionsEClass, ExtensionAdditions.class, "ExtensionAdditions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExtensionAdditions_ExtensionAdditions(), this.getExtensionAddition(), null, "extensionAdditions", null, 0, -1, ExtensionAdditions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentTypeListEClass, ComponentTypeList.class, "ComponentTypeList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getComponentTypeList_ComponentTypes(), this.getComponentType(), null, "componentTypes", null, 0, -1, ComponentTypeList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(versionNumberEClass, VersionNumber.class, "VersionNumber", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getVersionNumber_Number(), ecorePackage.getELong(), "number", null, 0, 1, VersionNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(extensionAdditionEClass, ExtensionAddition.class, "ExtensionAddition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(extensionAdditionGroupEClass, ExtensionAdditionGroup.class, "ExtensionAdditionGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExtensionAdditionGroup_VersionNumber(), this.getVersionNumber(), null, "versionNumber", null, 0, 1, ExtensionAdditionGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExtensionAdditionGroup_ComponentTypeList(), this.getComponentTypeList(), null, "componentTypeList", null, 0, 1, ExtensionAdditionGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentTypeEClass, ComponentType.class, "ComponentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(namedComponentTypeEClass, NamedComponentType.class, "NamedComponentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getNamedComponentType_NamedType(), this.getNamedType(), null, "namedType", null, 0, 1, NamedComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNamedComponentType_Value(), this.getValue(), null, "value", null, 0, 1, NamedComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentOfTypeEClass, ComponentOfType.class, "ComponentOfType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getComponentOfType_Type(), this.getType(), null, "type", null, 0, 1, ComponentOfType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(anyDefinedNamedTypeEClass, AnyDefinedNamedType.class, "AnyDefinedNamedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAnyDefinedNamedType_Name(), ecorePackage.getEString(), "name", null, 0, 1, AnyDefinedNamedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAnyDefinedNamedType_DefinedType(), this.getNamedType(), null, "definedType", null, 0, 1, AnyDefinedNamedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sequenceValueEClass, SequenceValue.class, "SequenceValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSequenceValue_ComponentValueList(), this.getComponentValueList(), null, "componentValueList", null, 0, 1, SequenceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(componentValueListEClass, ComponentValueList.class, "ComponentValueList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getComponentValueList_Values(), this.getNamedValue(), null, "values", null, 0, -1, ComponentValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sequenceOfTypeEClass, SequenceOfType.class, "SequenceOfType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSequenceOfType_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, SequenceOfType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSequenceOfType_Type(), this.getType(), null, "type", null, 0, 1, SequenceOfType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(setTypeEClass, SetType.class, "SetType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSetType_ExtensionAndException(), this.getExtensionAndException(), null, "extensionAndException", null, 0, 1, SetType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSetType_ComponentTypeList(), this.getComponentTypeList(), null, "componentTypeList", null, 0, 1, SetType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(setOfTypeEClass, SetOfType.class, "SetOfType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSetOfType_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, SetOfType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSetOfType_Type(), this.getType(), null, "type", null, 0, 1, SetOfType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(choiceTypeEClass, ChoiceType.class, "ChoiceType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getChoiceType_AlternativeTypeList(), this.getAlternativeTypeList(), null, "alternativeTypeList", null, 0, 1, ChoiceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getChoiceType_ExtensionAndException(), this.getExtensionAndException(), null, "extensionAndException", null, 0, 1, ChoiceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getChoiceType_ExtensionAdditionAlternativesList(), this.getExtensionAdditionAlternativesList(), null, "extensionAdditionAlternativesList", null, 0, 1, ChoiceType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(alternativeTypeListEClass, AlternativeTypeList.class, "AlternativeTypeList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAlternativeTypeList_NamedTypes(), this.getNamedType(), null, "namedTypes", null, 0, -1, AlternativeTypeList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(extensionAdditionAlternativesGroupEClass, ExtensionAdditionAlternativesGroup.class, "ExtensionAdditionAlternativesGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExtensionAdditionAlternativesGroup_VersionNumber(), this.getVersionNumber(), null, "versionNumber", null, 0, 1, ExtensionAdditionAlternativesGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExtensionAdditionAlternativesGroup_AlternativeTypeList(), this.getAlternativeTypeList(), null, "alternativeTypeList", null, 0, 1, ExtensionAdditionAlternativesGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(extensionAdditionAlternativeEClass, ExtensionAdditionAlternative.class, "ExtensionAdditionAlternative", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(extensionAdditionAlternativesListEClass, ExtensionAdditionAlternativesList.class, "ExtensionAdditionAlternativesList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExtensionAdditionAlternativesList_ExtensionAdditionAlternative(), this.getExtensionAdditionAlternative(), null, "extensionAdditionAlternative", null, 0, -1, ExtensionAdditionAlternativesList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(choiceValueEClass, ChoiceValue.class, "ChoiceValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getChoiceValue_Identifier(), ecorePackage.getEString(), "identifier", null, 0, 1, ChoiceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getChoiceValue_Value(), this.getValue(), null, "value", null, 0, 1, ChoiceValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(prefixedTypeEClass, PrefixedType.class, "PrefixedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(taggedTypeEClass, TaggedType.class, "TaggedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTaggedType_Tag(), this.getTag(), null, "tag", null, 0, 1, TaggedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getTaggedType_TagSpec(), ecorePackage.getEString(), "tagSpec", null, 0, 1, TaggedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTaggedType_Type(), this.getType(), null, "type", null, 0, 1, TaggedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(tagEClass, Tag.class, "Tag", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getTag_EncodingReference(), ecorePackage.getEString(), "encodingReference", null, 0, 1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getTag_TagClass(), ecorePackage.getEString(), "tagClass", null, 0, 1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getTag_ClassNumber(), this.getClassNumber(), null, "classNumber", null, 0, 1, Tag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(classNumberEClass, ClassNumber.class, "ClassNumber", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getClassNumber_Number(), ecorePackage.getELong(), "number", null, 0, 1, ClassNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getClassNumber_Value(), this.getDefinedValue(), null, "value", null, 0, 1, ClassNumber.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(objectIdentifierTypeEClass, ObjectIdentifierType.class, "ObjectIdentifierType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(objectIdentifierValueEClass, ObjectIdentifierValue.class, "ObjectIdentifierValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getObjectIdentifierValue_Components(), this.getObjIdComponents(), null, "components", null, 0, -1, ObjectIdentifierValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(objIdComponentsEClass, ObjIdComponents.class, "ObjIdComponents", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getObjIdComponents_Number(), ecorePackage.getELong(), "number", null, 0, 1, ObjIdComponents.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(timeTypeEClass, TimeType.class, "TimeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(dateTypeEClass, DateType.class, "DateType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(timeOfDayTypeEClass, TimeOfDayType.class, "TimeOfDayType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(dateTimeTypeEClass, DateTimeType.class, "DateTimeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(durationTypeEClass, DurationType.class, "DurationType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(characterStringTypeEClass, CharacterStringType.class, "CharacterStringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(characterStringValueEClass, CharacterStringValue.class, "CharacterStringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(restrictedCharacterStringTypeEClass, RestrictedCharacterStringType.class, "RestrictedCharacterStringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(bmpStringEClass, BMPString.class, "BMPString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(generalStringEClass, GeneralString.class, "GeneralString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(graphicStringEClass, GraphicString.class, "GraphicString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(ia5StringEClass, IA5String.class, "IA5String", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(iso646StringEClass, ISO646String.class, "ISO646String", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(numericStringEClass, NumericString.class, "NumericString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(printableStringEClass, PrintableString.class, "PrintableString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(teletexStringEClass, TeletexString.class, "TeletexString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(t61StringEClass, T61String.class, "T61String", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(universalStringEClass, UniversalString.class, "UniversalString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(utf8StringEClass, UTF8String.class, "UTF8String", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(videotexStringEClass, VideotexString.class, "VideotexString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(visibleStringEClass, VisibleString.class, "VisibleString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(restrictedCharacterStringValueEClass, RestrictedCharacterStringValue.class, "RestrictedCharacterStringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(unrestrictedCharacterStringTypeEClass, UnrestrictedCharacterStringType.class, "UnrestrictedCharacterStringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(usefulTypeEClass, UsefulType.class, "UsefulType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getUsefulType_Type(), ecorePackage.getEString(), "type", null, 0, 1, UsefulType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(constraintEClass, Constraint.class, "Constraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getConstraint_ConstraintSpec(), this.getConstraintSpec(), null, "constraintSpec", null, 0, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getConstraint_ExceptionSpec(), this.getExceptionSpec(), null, "exceptionSpec", null, 0, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(constraintSpecEClass, ConstraintSpec.class, "ConstraintSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(subtypeConstraintEClass, SubtypeConstraint.class, "SubtypeConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(elementSetSpecsEClass, ElementSetSpecs.class, "ElementSetSpecs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getElementSetSpecs_ElementSetSpec(), this.getElementSetSpec(), null, "elementSetSpec", null, 0, -1, ElementSetSpecs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(elementSetSpecEClass, ElementSetSpec.class, "ElementSetSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getElementSetSpec_Exclusions(), this.getExclusions(), null, "exclusions", null, 0, 1, ElementSetSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(unionsEClass, Unions.class, "Unions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getUnions_Intersections(), this.getIntersections(), null, "intersections", null, 0, -1, Unions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(intersectionsEClass, Intersections.class, "Intersections", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getIntersections_IntersectionElements(), this.getIntersectionElements(), null, "intersectionElements", null, 0, -1, Intersections.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(intersectionElementsEClass, IntersectionElements.class, "IntersectionElements", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getIntersectionElements_Elements(), this.getElements(), null, "elements", null, 0, 1, IntersectionElements.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getIntersectionElements_Exclusions(), this.getExclusions(), null, "exclusions", null, 0, 1, IntersectionElements.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(exclusionsEClass, Exclusions.class, "Exclusions", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExclusions_Elements(), this.getElements(), null, "elements", null, 0, 1, Exclusions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(elementsEClass, Elements.class, "Elements", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(subtypeElementsEClass, SubtypeElements.class, "SubtypeElements", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(singleValueEClass, SingleValue.class, "SingleValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSingleValue_Value(), this.getValue(), null, "value", null, 0, 1, SingleValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(containedSubtypeEClass, ContainedSubtype.class, "ContainedSubtype", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getContainedSubtype_Type(), this.getType(), null, "type", null, 0, 1, ContainedSubtype.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(valueRangeEClass, ValueRange.class, "ValueRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getValueRange_LowerEndpoint(), this.getLowerEndpoint(), null, "lowerEndpoint", null, 0, 1, ValueRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getValueRange_UpperEndpoint(), this.getUpperEndpoint(), null, "upperEndpoint", null, 0, 1, ValueRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(lowerEndpointEClass, LowerEndpoint.class, "LowerEndpoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getLowerEndpoint_Value(), this.getLowerEndValue(), null, "value", null, 0, 1, LowerEndpoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLowerEndpoint_Closed(), ecorePackage.getEString(), "closed", null, 0, 1, LowerEndpoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(upperEndpointEClass, UpperEndpoint.class, "UpperEndpoint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getUpperEndpoint_Closed(), ecorePackage.getEString(), "closed", null, 0, 1, UpperEndpoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getUpperEndpoint_Value(), this.getUpperEndValue(), null, "value", null, 0, 1, UpperEndpoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(lowerEndValueEClass, LowerEndValue.class, "LowerEndValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getLowerEndValue_Value(), this.getValueRangeValue(), null, "value", null, 0, 1, LowerEndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getLowerEndValue_MinValue(), ecorePackage.getEString(), "minValue", null, 0, 1, LowerEndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(upperEndValueEClass, UpperEndValue.class, "UpperEndValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getUpperEndValue_Value(), this.getValueRangeValue(), null, "value", null, 0, 1, UpperEndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getUpperEndValue_MaxValue(), ecorePackage.getEString(), "maxValue", null, 0, 1, UpperEndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sizeConstraintEClass, SizeConstraint.class, "SizeConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSizeConstraint_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, SizeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(typeConstraintEClass, TypeConstraint.class, "TypeConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getTypeConstraint_Type(), this.getType(), null, "type", null, 0, 1, TypeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(permittedAlphabetEClass, PermittedAlphabet.class, "PermittedAlphabet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getPermittedAlphabet_Constraint(), this.getConstraint(), null, "constraint", null, 0, 1, PermittedAlphabet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(valueRangeValueEClass, ValueRangeValue.class, "ValueRangeValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(exceptionSpecEClass, ExceptionSpec.class, "ExceptionSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExceptionSpec_Exception(), this.getExceptionIdentification(), null, "exception", null, 0, 1, ExceptionSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(exceptionIdentificationEClass, ExceptionIdentification.class, "ExceptionIdentification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getExceptionIdentification_Number(), ecorePackage.getELong(), "number", null, 0, 1, ExceptionIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExceptionIdentification_DefValue(), this.getDefinedValue(), null, "defValue", null, 0, 1, ExceptionIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExceptionIdentification_Type(), this.getType(), null, "type", null, 0, 1, ExceptionIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExceptionIdentification_Value(), this.getValue(), null, "value", null, 0, 1, ExceptionIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(cStringEClass, CString.class, "CString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    // Initialize enums and add enum literals
    initEEnum(specialValueEEnum, SpecialValue.class, "SpecialValue");
    addEEnumLiteral(specialValueEEnum, SpecialValue.PLUS_INFINITY);
    addEEnumLiteral(specialValueEEnum, SpecialValue.MINUS_INFINITY);
    addEEnumLiteral(specialValueEEnum, SpecialValue.NOT_ANUMBER);

    initEEnum(boolEEnum, de.thwildau.tm.moses.asn1.asn1.BOOL.class, "BOOL");
    addEEnumLiteral(boolEEnum, de.thwildau.tm.moses.asn1.asn1.BOOL.FALSE);
    addEEnumLiteral(boolEEnum, de.thwildau.tm.moses.asn1.asn1.BOOL.TRUE);

    // Create resource
    createResource(eNS_URI);
  }

} //Asn1PackageImpl
